package fl.ass.service.transform;

import cn.cmm.base.framework.utils.CollectionUtils;
import fl.ass.facade.dto.AssVfInfoDTO;
import fl.ass.service.po.AssVfInfo;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 资产核销信息表 转换器
 * @Description: 服务层与展现层转换类
 * @Description: 所有的PO只能在持久成和服务层使用
 * @Description: 所有的DTO只能在展现层和服务层使用
 * @Description: 在服务层中向下是DTO转PO, 向上是PO转DTO
 */
public class AssVfInfoTransform {

    /**
     * PO 转  DTO
     *
     * @param po AssVfInfo
     * @return AssVfInfoDTO
     */
    public static AssVfInfoDTO baseToDTO(AssVfInfo po) {
        AssVfInfoDTO dto = null;
        if (po != null) {
            dto = new AssVfInfoDTO();
            dto.setId(po.getId());
            dto.setCstId(po.getCstId());//客户ID
            dto.setCstNm(po.getCstNm());//客户名称
            dto.setIdtyNum(po.getIdtyNum());//证件号码
            dto.setCntNo(po.getCntNo());//合同号
            dto.setPaySchId(po.getPaySchId());//支付表ID
            dto.setPaySchNo(po.getPaySchNo());//支付表编号
            dto.setPaySchStsCd(po.getPaySchStsCd());//支付表状态（PRJ0037）
            dto.setVfStsCd(po.getVfStsCd());//核销状态
            dto.setVfReason(po.getVfReason());//核销原因
            dto.setVfHdlWay(po.getVfHdlWay());//后续处理方式
            dto.setVfAmt(po.getVfAmt());//核销金额
            dto.setBreakAmt(po.getBreakAmt());//违约金
            dto.setOvdDay(po.getOvdDay());//逾期天数
            dto.setOvdAmt(po.getOvdAmt());//逾期金额
            dto.setOvdRent(po.getOvdRent());//逾期租金
            dto.setOvdItr(po.getOvdItr());//逾期利息
            dto.setOvdPntItr(po.getOvdPntItr());//逾期罚息
            dto.setIsDel(po.getIsDel());//是否删除（0：否；1：是）

            dto.setCrtTm(po.getCrtTm());//创建时间
            dto.setCrtUsrId(po.getCrtUsrId());//创建人
            dto.setMdfTm(po.getMdfTm());//修改时间
            dto.setMdfUsrId(po.getMdfUsrId());//修改人
        }
        return dto;
    }

    /**
     * DTO 转  PO
     *
     * @param dto AssVfInfoDTO
     * @return AssVfInfo
     */
    public static AssVfInfo baseToPO(AssVfInfoDTO dto) {
        AssVfInfo po = null;
        if (dto != null) {
            po = new AssVfInfo();
            po.setId(dto.getId());
            po.setCstId(dto.getCstId());//客户ID
            po.setCstNm(dto.getCstNm());//客户名称
            po.setIdtyNum(dto.getIdtyNum());//证件号码
            po.setCntNo(dto.getCntNo());//合同号
            po.setPaySchId(dto.getPaySchId());//支付表ID
            po.setPaySchNo(dto.getPaySchNo());//支付表编号
            po.setPaySchStsCd(dto.getPaySchStsCd());//支付表状态（PRJ0037）
            po.setVfStsCd(dto.getVfStsCd());//核销状态
            po.setVfReason(dto.getVfReason());//核销原因
            po.setVfHdlWay(dto.getVfHdlWay());//后续处理方式
            po.setVfAmt(dto.getVfAmt());//核销金额
            po.setBreakAmt(dto.getBreakAmt());//违约金
            po.setOvdDay(dto.getOvdDay());//逾期天数
            po.setOvdAmt(dto.getOvdAmt());//逾期金额
            po.setOvdRent(dto.getOvdRent());//逾期租金
            po.setOvdItr(dto.getOvdItr());//逾期利息
            po.setOvdPntItr(dto.getOvdPntItr());//逾期罚息
            po.setIsDel(dto.getIsDel());//是否删除（0：否；1：是）

            po.setCrtTm(dto.getCrtTm());//创建时间
            po.setCrtUsrId(dto.getCrtUsrId());//创建人
            po.setMdfTm(dto.getMdfTm());//修改时间
            po.setMdfUsrId(dto.getMdfUsrId());//修改人
        }
        return po;
    }

    /**
     * PO 转  DTO
     *
     * @param po AssVfInfo
     * @return AssVfInfoDTO
     */
    public static AssVfInfoDTO toDTO(AssVfInfo po) {
        AssVfInfoDTO dto = baseToDTO(po);
        //设置自定义扩展属性
        return dto;
    }

    /**
     * DTO 转  PO
     *
     * @param dto AssVfInfoDTO
     * @return AssVfInfo
     */
    public static AssVfInfo toPO(AssVfInfoDTO dto) {
        AssVfInfo po = baseToPO(dto);
        //设置自定义扩展属性
        return po;
    }

    /**
     * PO集合 转 DTO集合
     *
     * @param list List<AssVfInfo>
     * @return List<AssVfInfoDTO>
     */
    public static List<AssVfInfoDTO> toDTOList(List<AssVfInfo> list) {
        List<AssVfInfoDTO> voList = new ArrayList<AssVfInfoDTO>();
        if (CollectionUtils.isNotEmpty(list)) {
            for (AssVfInfo po : list) {
                voList.add(toDTO(po));
            }
        }
        return voList;
    }
}
